package com.chj.chap05.oom;

/**
 * 通过创建多线程导致虚拟机栈和本地方法栈内存溢出异常
 * 设置jvm的大小为：VM Args: -Xss2M -XX:+PrintGCDetails(这时候不防设置大一些）
 * java的线程时映射到操作系统的内核线程上的，因此上述代码执行时有较大风险，可能会导致操作系统假死（果然死机了）。
 */
public class JavaVMStackOOMSync {
    private void dontStop(){
        while(true){
        }
    }
    public void stackLeakByThread(){
        while(true){
            Thread thread = new Thread(new Runnable(){
                @Override
                public void run(){
                    dontStop();
                }
            });
            thread.start();
        }
    }
    // 会导致操作系统假死（死机）
    public static void main(String[] args) {
//        JavaVMStackOOMSync oom = new JavaVMStackOOMSync();
//        oom.stackLeakByThread();
    }
}
